package com.cyz.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cyz.model.dto.space.analyze.*;
import com.cyz.model.entity.Space;
import com.cyz.model.entity.User;
import com.cyz.model.vo.space.analyze.*;

import java.util.List;

public interface SpaceAnalyzeService extends IService<Space> {

    /**
     * 获取空间使用分析数据
     *
     * @param spaceAnalyzeRequest 请求参数
     * @param loginUser           操作用户
     * @return 分析结果
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceAnalyzeRequest spaceAnalyzeRequest, User loginUser);


    /**
     * 按照图片分类来分析数据
     *
     * @param spaceCategoryAnalyzeRequest   请求参数
     * @param loginUser 操作用户
     * @return  分析结果
     */
    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser);

    /**
     * 按照图片标签分析数据
     *
     * @param spaceTagAnalyzeRequest    请求参数
     * @param loginUser 操作用户
     * @return  分析结果
     */
    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, User loginUser);

    /**
     * 按照图片大小分析
     *
     * @param spaceSizeAnalyzeRequest   请求参数
     * @param loginUser 操作用户
     * @return  分析结果
     */
    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);

    /**
     * 根据用户上传日期分析
     *
     * @param spaceUserAnalyzeRequest   请求参数
     * @param loginUser 操作用户
     * @return  分析结果
     */
    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    /**
     * 根据用户空间使用排名分析（仅管理员）
     *
     * @param spaceRankAnalyzeRequest   请求参数
     * @param loginUser 操作用户
     * @return  分析结果
     */
    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);
}
